class Solution {//leetcode1005——K次取反后最大化的数组和
public:
    int largestSumAfterKNegations(vector<int>& nums, int k) {
        int m=0,n=nums.size(),min_num=INT_MAX;
        for(int i=0;i<n;i++){
            if(nums[i]<0) m++;
            min_num=min(min_num,abs(nums[i]));
        }
        int ret=0;
        if(m>k){
            sort(nums.begin(),nums.end());
            for(int i=0;i<k;i++){
                ret+=-nums[i];
            }
            for(int i=k;i<n;i++){
                ret+=nums[i];
            }
        }
        else if(m<=k){
            for(auto e:nums){
                ret+=abs(e);
            }
            if((k-m)%2) ret-=2*(min_num);
        }
        return ret;
    }
};